/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/*
 Nicolas D'Amelio C.I. 19.637.704
 Daniel Santeliz C.I. 19.696.020
 Nellymer Montero C.I. 20.926.114
 Leandro Oliva C.I.20.187.193
 */
/*
 Nicolas D'Amelio C.I. 19.637.704
 Daniel Santeliz C.I. 19.696.020
 Nellymer Montero C.I. 20.926.114
 Leandro Oliva C.I.20.187.193
 */
package Principal;

/*
 Nicolas D'Amelio C.I. 19.637.704
 Daniel Santeliz C.I. 19.696.020
 Nellymer Montero C.I. 20.926.114
 Leandro Oliva C.I.20.187.193
 */

import Clases.Estudiante;
import Clases.Profesor;
import Clases.Seccion;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(String[] args) throws IOException {
		int opcion = 0;
		boolean validarSeccion = false;
		boolean validarProfesor = false;
		boolean validarInscritos = false;
		boolean validarPruebas = false;

		boolean continuar = true;
		BufferedReader tecla = new BufferedReader(new InputStreamReader(
				System.in));
		Seccion seccion = null;
		Profesor profesor;
		do {
			System.out
					.println("===========================================================");
			System.out
					.println("================== Menu de Opciones   =====================");
			System.out
					.println("    1-  Crear Seccion                 (puede hacerse 1 vez)");
			System.out
					.println("    2-  Asignar Profesor a la seccion (puede hacerse 1 vez)");
			System.out
					.println("    3-  Inscribir Estudiante                               ");
			System.out
					.println("    4-  Retirar Estudiante                                 ");
			System.out
					.println("    5-  Buscar Estudiante                                  ");
			System.out
					.println("    6-  Aplicar Evaluaciones          (puede hacerse 1 vez)");
			System.out
					.println("    7-  Listar Estudiantes ordenado por Cedula             ");
			System.out
					.println("    8-  Listar Estudiantes ordenado por Nota Final         ");
			System.out
					.println("    9-  Listar Estudiantes Aprobados                       ");
			System.out
					.println("    10- Listar Estudiantes Aplazados                       ");
			System.out
					.println("    11- Promedio                                           ");
			System.out
					.println("    12- Salir                                              ");
			System.out
					.println("===========================================================");
			System.out
					.println("================== Presione un numero segun la opcion======");

			while (continuar) {
				try {
					opcion = Integer.parseInt(tecla.readLine());
					break;
				} catch (NumberFormatException e) {
					System.out
							.println("Error, Selecione un numero en el rango por favor");
				}
			}
			switch (opcion) {
			case 1: {
				if (validarSeccion == false) {
					String numeroSeccion = "";
					validarSeccion = true;
					System.out.println("Ingrese el numero de la Seccion:");
					while (continuar) {
						try {
							numeroSeccion = tecla.readLine();
							break;
						} catch (NumberFormatException e) {
							System.out
									.println("Error, numero invalido, intente de nuevo");
						}
					}
					seccion = new Seccion(numeroSeccion);
				} else {
					System.out
							.println("Seccion creada, pase al siguiente paso");
				}
				tecla.readLine();
			}
				break;
			case 2: {
				if (validarProfesor == false) {
					String nombre, apellido, titulo, cedula;
					System.out
							.println("Ingrese los siguientes datos para el profesor: ");
					System.out
							.println("===============================================");

					System.out.println("Nombre: ");
					nombre = tecla.readLine();
					System.out.println("Apellido");
					apellido = tecla.readLine();
					System.out.println("cedula: ");
					cedula = tecla.readLine();
					System.out.println("Titulo Academico:");
					titulo = tecla.readLine();
					validarProfesor = true;
					profesor = new Profesor(nombre, apellido, cedula, titulo);
					seccion.AsignarProfesor(profesor);
				} else {
					System.out
							.println("Profesor asignado, pase al siguiente paso");
				}
				tecla.readLine();
			}
				break;
			case 3: {
				if (validarSeccion == true) {
					validarInscritos = true;
					String nombre, apellido, cedula;
					String resp = "s";
					while (resp.toLowerCase().equals("s")) {
						System.out
								.println("Ingrese los siguientes datos para el Estudiante: ");
						System.out
								.println("================================================ ");
						System.out.println("cedula: ");
						cedula = tecla.readLine();
						System.out.println("nombre: ");
						nombre = tecla.readLine();
						System.out.println("apellido: ");
						apellido = tecla.readLine();
						Estudiante estudiante = new Estudiante(nombre,
								apellido, cedula);
						seccion.InscribirEstrudiante(estudiante);
						System.out
								.println("Desea incribir otro Estudiante s o n");
						resp = tecla.readLine();
					}
				} else {
					System.out
							.println("Error, debe crear seccion y asignar profesor.");
					tecla.readLine();
				}
			}
				break;
			case 4: {
				if (validarInscritos) {
					String cedula;

					System.out
							.println("cedula del Estudiante q desea retirar: ");
					cedula = tecla.readLine();
					seccion.RetirarEstudiante(cedula);
				} else {
					System.out
							.println("No existen estudiantes inscritos o cedula no existe");
				}
				tecla.readLine();
			}
				break;
			case 5: {
				if (validarInscritos) {
					String cedula;
					Estudiante estudiante;
					System.out
							.println("cedula del Estudiante q desea buscar: ");
					cedula = tecla.readLine();
					seccion.BuscarEstudiante(cedula);
				} else {
					System.out
							.println("No existen estudiantes inscritos o cedula no existe");
				}
				tecla.readLine();
			}
				break;
			case 6: {
				if (validarInscritos) {
					if (validarPruebas == false) {
						validarPruebas = true;
						seccion.AplicarEvaluaciones();
					} else {
						System.out
								.println("Las evaluaciones ya fueron aplicadas, seguir al siguiente paso");
					}
				} else {
					System.out
							.println("No hay estudiantes inscritos, verifique si se salto pasos anteriores");
				}
				tecla.readLine();
			}
				break;
			case 7: {
				if (validarInscritos) {
					seccion.ListarEstudiantesCedula();
				} else {
					System.out
							.println("No hay estudiantes inscritos, verifique si se salto pasos anteriores");
				}
				tecla.readLine();
			}
				break;
			case 8: {
				if (validarPruebas) {
					seccion.ListarEstudiantesNota();
				} else {
					System.out
							.println("Debe aplicar las evaluaciones para emitir un listdo, por favor verifique");
				}
				tecla.readLine();
			}
				break;
			case 9: {
				if (validarPruebas) {
					seccion.ListarAprobados();
				} else {
					System.out
							.println("Debe aplicar las evaluaciones para emitir un listdo, por favor verifique");
				}
				tecla.readLine();
			}
				break;
			case 10: {
				if (validarPruebas) {
					seccion.ListarReprobados();
				} else {
					System.out
							.println("Debe aplicar las evaluaciones para emitir un listdo, por favor verifique");
				}
				tecla.readLine();
			}
				break;
			case 11: {
				if (validarPruebas) {
					seccion.ListaPromedio();
				} else {
					System.out
							.println("Debe aplicar las evaluaciones para emitir un listdo, por favor verifique");
				}
				tecla.readLine();
			}
				break;
			}
		} while (opcion != 12);

	}
}
